home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / catD / bcopy.z / bcopy
Encoding:
Text File  |  2002-10-03  |  9.2 KB  |  132 lines

  1.  
  2.  
  3.  
  4. bbbbccccooooppppyyyy((((DDDD3333))))                                                            bbbbccccooooppppyyyy((((DDDD3333))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      _bbbb_cccc_oooo_pppp_yyyy - copy data between address locations in the kernel
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_tttt_yyyy_pppp_eeee_ssss_...._hhhh_>>>>
  13.      _####_iiii_nnnn_cccc_llll_uuuu_dddd_eeee _<<<<_ssss_yyyy_ssss_////_dddd_dddd_iiii_...._hhhh_>>>>
  14.      _vvvv_oooo_iiii_dddd _bbbb_cccc_oooo_pppp_yyyy_((((_cccc_aaaa_dddd_dddd_rrrr______tttt _f_r_o_m_,,,, _cccc_aaaa_dddd_dddd_rrrr______tttt _t_o_,,,, _ssss_iiii_zzzz_eeee______tttt _b_c_o_u_n_t_))))_;;;;
  15.  
  16.    AAAArrrrgggguuuummmmeeeennnnttttssss
  17.      _f_r_o_m      Source address from which the copy is made.
  18.  
  19.      _t_o        Destination address to which the copy is made.
  20.  
  21.      _b_c_o_u_n_t    Number of bytes to be copied.
  22.  
  23. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  24.      _bbbb_cccc_oooo_pppp_yyyy copies _b_c_o_u_n_t bytes from one kernel address to another.  It chooses
  25.      the best algorithm based on address alignment and number of bytes to
  26.      copy.
  27.  
  28.    RRRReeeettttuuuurrrrnnnn VVVVaaaalllluuuueeeessss
  29.      None
  30.  
  31. UUUUSSSSAAAAGGGGEEEE
  32.      If the input and output addresses overlap, the function executes, but the
  33.      results are undefined.
  34.  
  35.      The source and destination address ranges must both be within the kernel
  36.      address space and must be memory resident.  No range checking is done.
  37.      Since there is no mechanism by which drivers that conform to the rules of
  38.      the DDI/DKI can obtain and use a kernel address which is not memory
  39.      resident (an address which is paged out), DDI/DKI conforming drivers can
  40.      assume that any address to which they have access is memory resident and
  41.      therefore a valid argument to _bbbb_cccc_oooo_pppp_yyyy.  Addresses within user address space
  42.      are not valid arguments, and specifying such an address may cause the
  43.      driver to corrupt the system in an unpredictable way.  For copying
  44.      between kernel and user space, drivers must use an appropriate function
  45.      defined for that purpose (for example, _cccc_oooo_pppp_yyyy_iiii_nnnn(D3), _cccc_oooo_pppp_yyyy_oooo_uuuu_tttt(D3),
  46.      _uuuu_iiii_oooo_mmmm_oooo_vvvv_eeee(D3), _uuuu_rrrr_eeee_aaaa_dddd_cccc(D3), or _uuuu_wwww_rrrr_iiii_tttt_eeee_cccc(D3)).
  47.  
  48.      Do not use _bbbb_cccc_oooo_pppp_yyyy to copy to or from I/O (hardware) addresses, because
  49.      they may not allow accesses of the type used by _bbbb_cccc_oooo_pppp_yyyy; use it for memory
  50.      addresses only.  Use the _hhhh_wwww_cccc_pppp_iiii_nnnn(D3), or _hhhh_wwww_cccc_pppp_oooo_uuuu_tttt(D3) routines for I/O
  51.      addresses.
  52.  
  53.    LLLLeeeevvvveeeellll
  54.      Initialization, Base or Interrupt.
  55.  
  56.    SSSSyyyynnnncccchhhhrrrroooonnnniiiizzzzaaaattttiiiioooonnnn CCCCoooonnnnssssttttrrrraaaaiiiinnnnttttssss
  57.      Does not sleep.
  58.  
  59.  
  60.  
  61.                                                                         PPPPaaaaggggeeee 1111
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68. bbbbccccooooppppyyyy((((DDDD3333))))                                                            bbbbccccooooppppyyyy((((DDDD3333))))
  69.  
  70.  
  71.  
  72.      Driver-defined basic locks, read/write locks, and sleep locks may be held
  73.      across calls to this function.
  74.  
  75.    EEEExxxxaaaammmmpppplllleeeessss
  76.      An I/O request is made for data stored in a RAM disk.  If the I/O
  77.      operation is a read request, data are copied from the RAM disk to a
  78.      buffer (line 9).  If it is a write request, data are copied from a buffer
  79.      to the RAM disk (line 15).  The _bbbb_cccc_oooo_pppp_yyyy function is used since both the RAM
  80.      disk and the buffer are part of the kernel address space.
  81.  
  82.       _1111  _####_dddd_eeee_ffff_iiii_nnnn_eeee _RRRR_AAAA_MMMM_DDDD_NNNN_BBBB_LLLL_KKKK    _1111_0000_0000_0000           _////_**** _nnnn_uuuu_mmmm_bbbb_eeee_rrrr _oooo_ffff _bbbb_llll_oooo_cccc_kkkk_ssss _iiii_nnnn _RRRR_AAAA_MMMM _dddd_iiii_ssss_kkkk _****_////
  83.       _2222  _####_dddd_eeee_ffff_iiii_nnnn_eeee _RRRR_AAAA_MMMM_DDDD_BBBB_SSSS_IIII_ZZZZ    _NNNN_BBBB_PPPP_SSSS_CCCC_TTTT_RRRR        _////_**** _bbbb_yyyy_tttt_eeee_ssss _pppp_eeee_rrrr _bbbb_llll_oooo_cccc_kkkk _****_////
  84.       _3333  _cccc_hhhh_aaaa_rrrr _rrrr_aaaa_mmmm_dddd_bbbb_llll_kkkk_ssss_[[[[_RRRR_AAAA_MMMM_DDDD_NNNN_BBBB_LLLL_KKKK_]]]]_[[[[_RRRR_AAAA_MMMM_DDDD_BBBB_SSSS_IIII_ZZZZ_]]]]_;;;; _////_**** _bbbb_llll_oooo_cccc_kkkk_ssss _ffff_oooo_rrrr_mmmm_iiii_nnnn_gggg _RRRR_AAAA_MMMM _dddd_iiii_ssss_kkkk _****_////
  85.             _...._...._....
  86.       _4444
  87.       _5555  _iiii_ffff _((((_bbbb_pppp_----_>>>>_bbbb______ffff_llll_aaaa_gggg_ssss _&&&& _BBBB______RRRR_EEEE_AAAA_DDDD_)))) _{{{{
  88.       _6666          _////_****
  89.       _7777           _**** _rrrr_eeee_aaaa_dddd _rrrr_eeee_qqqq_uuuu_eeee_ssss_tttt _---- _cccc_oooo_pppp_yyyy _dddd_aaaa_tttt_aaaa _ffff_rrrr_oooo_mmmm _RRRR_AAAA_MMMM _dddd_iiii_ssss_kkkk _tttt_oooo _ssss_yyyy_ssss_tttt_eeee_mmmm _bbbb_uuuu_ffff_ffff_eeee_rrrr
  90.       _8888           _****_////
  91.       _9999          _bbbb_cccc_oooo_pppp_yyyy_((((_rrrr_aaaa_mmmm_dddd_bbbb_llll_kkkk_ssss_[[[[_bbbb_pppp_----_>>>>_bbbb______bbbb_llll_kkkk_nnnn_oooo_]]]]_,,,, _bbbb_pppp_----_>>>>_bbbb______uuuu_nnnn_...._bbbb______aaaa_dddd_dddd_rrrr_,,,, _bbbb_pppp_----_>>>>_bbbb______bbbb_cccc_oooo_uuuu_nnnn_tttt_))))_;;;;
  92.      _1111_0000
  93.      _1111_1111  _}}}} _eeee_llll_ssss_eeee _{{{{
  94.      _1111_2222          _////_****
  95.      _1111_3333           _**** _wwww_rrrr_iiii_tttt_eeee _rrrr_eeee_qqqq_uuuu_eeee_ssss_tttt _---- _cccc_oooo_pppp_yyyy _dddd_aaaa_tttt_aaaa _ffff_rrrr_oooo_mmmm _ssss_yyyy_ssss_tttt_eeee_mmmm _bbbb_uuuu_ffff_ffff_eeee_rrrr _tttt_oooo _RRRR_AAAA_MMMM _dddd_iiii_ssss_kkkk
  96.      _1111_4444           _****_////
  97.      _1111_5555          _bbbb_cccc_oooo_pppp_yyyy_((((_bbbb_pppp_----_>>>>_bbbb______uuuu_nnnn_...._bbbb______aaaa_dddd_dddd_rrrr_,,,, _rrrr_aaaa_mmmm_dddd_bbbb_llll_kkkk_ssss_[[[[_bbbb_pppp_----_>>>>_bbbb______bbbb_llll_kkkk_nnnn_oooo_]]]]_,,,, _bbbb_pppp_----_>>>>_bbbb______bbbb_cccc_oooo_uuuu_nnnn_tttt_))))_;;;;
  98.      _1111_6666  _}}}}
  99.  
  100. RRRREEEEFFFFEEEERRRREEEENNNNCCCCEEEESSSS
  101.      _cccc_oooo_pppp_yyyy_iiii_nnnn(D3), _cccc_oooo_pppp_yyyy_oooo_uuuu_tttt(D3), _hhhh_wwww_cccc_pppp_iiii_nnnn(D3), _hhhh_wwww_cccc_pppp_oooo_uuuu_tttt(D3) _uuuu_iiii_oooo_mmmm_oooo_vvvv_eeee(D3), _uuuu_rrrr_eeee_aaaa_dddd_cccc(D3),
  102.      _uuuu_wwww_rrrr_iiii_tttt_eeee_cccc(D3)
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.                                                                         PPPPaaaaggggeeee 2222
  128.  
  129.  
  130.  
  131.